{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "888345b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Requirement already satisfied: langchain-community in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (0.3.29)\n",
      "Requirement already satisfied: pypdf in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (6.0.0)\n",
      "Requirement already satisfied: langchain-core<2.0.0,>=0.3.75 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (0.3.76)\n",
      "Requirement already satisfied: langchain<2.0.0,>=0.3.27 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (1.0.0a5)\n",
      "Requirement already satisfied: SQLAlchemy<3,>=1.4 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (2.0.43)\n",
      "Requirement already satisfied: requests<3,>=2.32.5 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (2.32.5)\n",
      "Requirement already satisfied: PyYAML>=5.3 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (6.0.2)\n",
      "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (3.12.15)\n",
      "Requirement already satisfied: tenacity!=8.4.0,<10,>=8.1.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (9.1.2)\n",
      "Requirement already satisfied: dataclasses-json<0.7,>=0.6.7 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (0.6.7)\n",
      "Requirement already satisfied: pydantic-settings<3.0.0,>=2.10.1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (2.10.1)\n",
      "Requirement already satisfied: langsmith>=0.1.125 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (0.4.23)\n",
      "Requirement already satisfied: httpx-sse<1.0.0,>=0.4.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (0.4.1)\n",
      "Requirement already satisfied: numpy>=1.26.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-community) (2.2.6)\n",
      "Requirement already satisfied: aiohappyeyeballs>=2.5.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (2.6.1)\n",
      "Requirement already satisfied: aiosignal>=1.4.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.4.0)\n",
      "Requirement already satisfied: async-timeout<6.0,>=4.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (4.0.3)\n",
      "Requirement already satisfied: attrs>=17.3.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (25.3.0)\n",
      "Requirement already satisfied: frozenlist>=1.1.1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.7.0)\n",
      "Requirement already satisfied: multidict<7.0,>=4.5 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (6.6.4)\n",
      "Requirement already satisfied: propcache>=0.2.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (0.3.2)\n",
      "Requirement already satisfied: yarl<2.0,>=1.17.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.20.1)\n",
      "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from dataclasses-json<0.7,>=0.6.7->langchain-community) (3.26.1)\n",
      "Requirement already satisfied: typing-inspect<1,>=0.4.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from dataclasses-json<0.7,>=0.6.7->langchain-community) (0.9.0)\n",
      "Requirement already satisfied: langchain-text-splitters<1.0.0,>=0.3.11 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain<2.0.0,>=0.3.27->langchain-community) (0.3.11)\n",
      "Requirement already satisfied: langgraph>=0.6.7 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain<2.0.0,>=0.3.27->langchain-community) (1.0.0a3)\n",
      "Requirement already satisfied: pydantic>=2.7.4 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain<2.0.0,>=0.3.27->langchain-community) (2.11.7)\n",
      "Requirement already satisfied: jsonpatch<2.0,>=1.33 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-core<2.0.0,>=0.3.75->langchain-community) (1.33)\n",
      "Requirement already satisfied: typing-extensions>=4.7 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-core<2.0.0,>=0.3.75->langchain-community) (4.15.0)\n",
      "Requirement already satisfied: packaging>=23.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langchain-core<2.0.0,>=0.3.75->langchain-community) (25.0)\n",
      "Requirement already satisfied: jsonpointer>=1.9 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from jsonpatch<2.0,>=1.33->langchain-core<2.0.0,>=0.3.75->langchain-community) (3.0.0)\n",
      "Requirement already satisfied: python-dotenv>=0.21.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from pydantic-settings<3.0.0,>=2.10.1->langchain-community) (1.1.1)\n",
      "Requirement already satisfied: typing-inspection>=0.4.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from pydantic-settings<3.0.0,>=2.10.1->langchain-community) (0.4.1)\n",
      "Requirement already satisfied: charset_normalizer<4,>=2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from requests<3,>=2.32.5->langchain-community) (3.4.3)\n",
      "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from requests<3,>=2.32.5->langchain-community) (3.10)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from requests<3,>=2.32.5->langchain-community) (2.5.0)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from requests<3,>=2.32.5->langchain-community) (2025.8.3)\n",
      "Requirement already satisfied: greenlet>=1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from SQLAlchemy<3,>=1.4->langchain-community) (3.2.4)\n",
      "Requirement already satisfied: mypy-extensions>=0.3.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.6.7->langchain-community) (1.1.0)\n",
      "Requirement already satisfied: langgraph-checkpoint<3.0.0,>=2.1.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (2.1.1)\n",
      "Requirement already satisfied: langgraph-prebuilt==0.7.0a2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (0.7.0a2)\n",
      "Requirement already satisfied: langgraph-sdk<0.3.0,>=0.2.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (0.2.6)\n",
      "Requirement already satisfied: xxhash>=3.5.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (3.5.0)\n",
      "Requirement already satisfied: ormsgpack>=1.10.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph-checkpoint<3.0.0,>=2.1.0->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (1.10.0)\n",
      "Requirement already satisfied: httpx>=0.25.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (0.28.1)\n",
      "Requirement already satisfied: orjson>=3.10.1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (3.11.3)\n",
      "Requirement already satisfied: anyio in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from httpx>=0.25.2->langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (4.10.0)\n",
      "Requirement already satisfied: httpcore==1.* in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from httpx>=0.25.2->langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (1.0.9)\n",
      "Requirement already satisfied: h11>=0.16 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from httpcore==1.*->httpx>=0.25.2->langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (0.16.0)\n",
      "Requirement already satisfied: requests-toolbelt>=1.0.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langsmith>=0.1.125->langchain-community) (1.0.0)\n",
      "Requirement already satisfied: zstandard>=0.23.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from langsmith>=0.1.125->langchain-community) (0.24.0)\n",
      "Requirement already satisfied: annotated-types>=0.6.0 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from pydantic>=2.7.4->langchain<2.0.0,>=0.3.27->langchain-community) (0.7.0)\n",
      "Requirement already satisfied: pydantic-core==2.33.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from pydantic>=2.7.4->langchain<2.0.0,>=0.3.27->langchain-community) (2.33.2)\n",
      "Requirement already satisfied: exceptiongroup>=1.0.2 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from anyio->httpx>=0.25.2->langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (1.3.0)\n",
      "Requirement already satisfied: sniffio>=1.1 in c:\\users\\a\\.conda\\envs\\langchain_learn\\lib\\site-packages (from anyio->httpx>=0.25.2->langgraph-sdk<0.3.0,>=0.2.2->langgraph>=0.6.7->langchain<2.0.0,>=0.3.27->langchain-community) (1.3.1)\n"
     ]
    }
   ],
   "source": [
    "! pip install langchain-community pypdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "35d41a2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dotenv import load_dotenv\n",
    "load_dotenv()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "945c5c62",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_core.documents import Document\n",
    "\n",
    "documents = [\n",
    "    Document(\n",
    "        page_content=\"Dogs are great companions, known for their loyalty and friendliness.\",\n",
    "        metadata={\"source\": \"mammal-pets-doc\"},\n",
    "    ),\n",
    "    Document(\n",
    "        page_content=\"Cats are independent pets that often enjoy their own space.\",\n",
    "        metadata={\"source\": \"mammal-pets-doc\"},\n",
    "    ),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "66fecff2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "107\n"
     ]
    }
   ],
   "source": [
    "from langchain_community.document_loaders import PyPDFLoader\n",
    "\n",
    "file_path = r\"..\\langchain官网学习-v1版本\\data\\nke-10k-2023.pdf\"\n",
    "loader = PyPDFLoader(file_path)\n",
    "\n",
    "docs = loader.load()\n",
    "\n",
    "print(len(docs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e37ed8bb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Table of Contents\n",
      "UNITED STATES\n",
      "SECURITIES AND EXCHANGE COMMISSION\n",
      "Washington, D.C. 20549\n",
      "FORM 10-K\n",
      "(Mark One)\n",
      "☑  ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(D) OF THE SECURITIES EXCHANGE ACT OF 1934\n",
      "F\n",
      "\n",
      "{'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'creator': 'EDGAR Filing HTML Converter', 'creationdate': '2023-07-20T16:22:00-04:00', 'title': '0000320187-23-000039', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'keywords': '0000320187-23-000039; ; 10-K', 'moddate': '2023-07-20T16:22:08-04:00', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'total_pages': 107, 'page': 0, 'page_label': '1'}\n"
     ]
    }
   ],
   "source": [
    "print(f\"{docs[0].page_content[:200]}\\n\")\n",
    "print(docs[0].metadata)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "cb512a64",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "516"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from langchain_text_splitters import RecursiveCharacterTextSplitter\n",
    "\n",
    "text_splitter = RecursiveCharacterTextSplitter(\n",
    "    chunk_size=1000, chunk_overlap=200, add_start_index=True\n",
    ")\n",
    "all_splits = text_splitter.split_documents(docs)\n",
    "\n",
    "len(all_splits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d8cb62f0",
   "metadata": {},
   "outputs": [],
   "source": [
    "! pip install -qU langchain-huggingface"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f4c4fe1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_huggingface import HuggingFaceEmbeddings\n",
    "\n",
    "embeddings = HuggingFaceEmbeddings(model_name=r\"D:\\modelscope\\cache\\bge-m3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "36db8fc4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generated vectors of length 1024\n",
      "\n",
      "[-0.04235035181045532, -0.024856388568878174, -0.045460350811481476, 0.015121486969292164, -0.001973446924239397, -0.02010415494441986, 0.014356465078890324, -0.0005767103866674006, 0.0006275433115661144, 0.045347731560468674]\n"
     ]
    }
   ],
   "source": [
    "vector_1 = embeddings.embed_query(all_splits[0].page_content)\n",
    "vector_2 = embeddings.embed_query(all_splits[1].page_content)\n",
    "\n",
    "assert len(vector_1) == len(vector_2)\n",
    "print(f\"Generated vectors of length {len(vector_1)}\\n\")\n",
    "print(vector_1[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7f4c602c",
   "metadata": {},
   "outputs": [],
   "source": [
    "! pip install -qU langchain-chroma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "4267e8c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_chroma import Chroma\n",
    "\n",
    "vector_store = Chroma(\n",
    "    collection_name=\"example_collection\",\n",
    "    embedding_function=embeddings,\n",
    "    persist_directory=\"./chroma_langchain_db\",  # Where to save data locally, remove if not necessary\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2707be6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "ids = vector_store.add_documents(documents=all_splits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "b847065f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['6e0decb7-36d4-45ce-97be-910863409512', 'a549e156-a20b-4c90-8f24-f0d4fc5477c9', '15e3aead-76dd-4321-83cf-6356b3c54b3a', '444246c5-64b6-4b5f-8410-6b8a2e397ba1', 'e7479f57-325e-49ae-8b2d-b95cf017e240', 'ff483a54-558a-45a1-9f46-0bbc7d05eac9', 'dc930136-d998-420f-a256-4d515baeb4a6', '76bc442e-33e5-41b2-82d8-eadf1ca991b6', '9f1129fb-cd0c-44de-ba1b-2fcc646929b5', '598c01b6-6415-491c-b650-00e876c34af9', 'd308bd07-65c2-479f-b65a-9f40f55874a9', '5c352d30-c331-4e0a-9242-77a1c7079b10', '8d3a629b-439b-4f67-8493-19b736088857', 'dc05b8a2-d120-4d1d-9f46-6f5d77e99640', 'a6b6992c-fd09-4593-9ccf-bd6e96939b03', 'e5f4c357-a9a5-4234-9b32-889b610ca7fc', 'fd5b937f-2924-4f9f-857a-2d82650396e5', 'ad57fd5d-d620-4d3c-8c5f-cb738c4dbc12', '8ce9a863-ef3d-4ebc-a453-9f9a3bcb2194', '859aa150-6779-43c3-b30a-6d7a5402fd23', 'a54e2777-6770-4679-90a5-1c8bdf073453', 'eb9166f3-1935-4f85-8268-cf1a78eaf676', 'e7d2f8d9-ed5a-451a-8a64-ca63bed05131', '2efaa7ad-dee5-4641-86e4-e255b4b9fac4', 'b97aac0c-1199-41b0-ad18-f50dd8d48b95', '44027e6f-4001-472d-98e1-de1a095704ab', '9c48b5e8-e4ac-48e7-874a-25ab7ec40606', '1bca7b2e-5deb-425e-9b36-b2d70400b18f', 'd70bdf01-3784-45ac-b395-69b4ef094799', '5e740ac4-f0c2-4283-9459-ad4ff5bbb140', '67d20784-3d85-447e-983b-c79c08985275', '4aa6d677-6b8a-4702-9b11-75df1871e391', '76b3ac9b-0584-4dcc-8944-04efd44c5f6f', '14bf1809-232c-4a70-a402-4148e3f20f9f', '4c137f8f-1ed9-4837-b91a-acc1a90442eb', '77a469e7-4a4a-404f-8db3-4036efbcd87b', 'c6148c70-f6f0-43b7-9c23-7095c38bc508', '887a5c0e-9762-424a-9afa-46544273d17f', '04f96e6c-cfa8-4b92-9b05-e5c74adc43c4', '731b6e48-7c1b-4a29-9f57-f2badff1c6c5', '459db96f-5540-4ba4-9bbc-8fe9933511ae', 'e1365461-0cd0-422b-80f5-ee75529216f9', 'ad9e2a49-f538-4fb7-950d-04391dff392c', '12475453-cd95-45eb-9cec-6efab8e9eb3c', '003cbf19-d08e-4084-b6ee-cb8a64973f2b', '6b7dc7a5-d139-4040-b2e8-bf685f416578', '1ca1c06a-2370-4dda-bc8d-0f3faef12a01', '13b594dd-d6c7-4c25-a845-f85fc20aa662', '04b7542e-aed9-476c-ab40-00ab4046b16e', '9caaa0a8-8293-427c-aa80-c6d9e4f67c08', 'a8b596c5-e02c-4c51-8be7-d0f8746ecfa7', '1e6026b3-bf35-4b7b-ba41-7e75e7fd4916', '90a744f6-410f-4266-a76e-b571dae25929', 'c1cd7235-d838-44a2-b20d-3aa4dd19d49f', '4f930ee8-f18a-432f-b532-38d105e9f961', 'd65fe4e3-bbb6-49b4-bc81-f4a0eb139f27', 'f02854d0-58a4-4d1e-9e59-d224bd59937c', '0bd4d65f-69bf-40a4-ad4a-ee6a2dc3b95e', 'd4567167-bdda-4863-b735-c666c4065c03', 'ac4828ed-429a-48ea-85a6-0e47793609dc', 'c7ea76df-fb01-4522-a171-03491d6678c1', '16a4ff10-1a09-4386-bc0a-0b32bafa0526', '4662b143-cf25-480e-b93b-bc54f51e1bfc', 'da20a847-dbab-4151-bb84-4f51712b8ed0', 'fdbe9ff8-ba99-4172-8e27-f1664f99e455', 'fa654824-a97b-4ec5-8e45-25978fe59b80', 'eafc6736-75bf-40ba-9dca-261442daa1e0', '8e2dca40-8788-46ce-a68d-53242571663e', 'c831987e-dacd-49b8-a583-ba8840cf7a66', '91c5d436-1195-42f2-8b65-b0596aa09a0a', 'a2ac02f9-8899-4566-92f4-327ed3562477', 'a5557589-8069-44cb-a75e-9fec9980ec77', '1e775c4c-4ef2-40d0-a53a-ea7b457aef3a', 'df382ae6-32b7-4345-94d0-716deb927419', '34affd21-a2d3-483f-8e0f-d3c611c30792', '80892163-1bb7-4aba-9292-b48a841f932d', '5cd1409d-d5c9-4b27-ba81-328bf28cd8dd', '3b86cf1b-ba94-4b78-be6c-340db0a15b34', '0cc7da75-ad42-4325-ae9a-356c500e4a9d', '6337b500-c4c1-47c8-bbdb-f84c6665e43e', 'cb33d2d5-0080-4fed-b6f8-d0b25a8ba156', '69e2e4c9-379f-4dc8-bccf-9f128907faa7', '8b0c6fe1-6f8e-4ec8-9fc5-5eba4b9f0b12', 'f771736b-06aa-46bb-b499-5a7292eb803a', '6d51cd0d-8dce-498a-844c-660deb4711dc', '2c7b774d-87cc-4f82-becc-fadfe0d0b774', '73659743-ec0d-41f3-a668-8c23a04ffd35', '181386c3-c427-411b-aa9f-48c4100ea3fc', 'f1fd1605-bc77-4ebb-ba79-2b3944a6a284', 'ee8350d1-069b-4bb9-acaf-36b9358cbc3f', 'c9ce770a-a8eb-4f3e-ba92-8c51d2721122', '551976bc-6017-4a99-85a6-80426176da50', '9e82ecd0-da04-4b2d-a6da-e1fc0e4f505c', '15dc7d40-0a5f-40b2-a387-c8ee77bdc63f', 'a6359930-1b19-49dd-84cf-c9c430dc6fef', '2ac1389f-e893-45a3-a824-3766cdbaa212', '8eda186f-fe12-4aed-9c6f-3182310c97e3', 'd4f98380-a26b-4a80-b53a-cc50104d347d', 'e69bfa8a-5d56-46b7-b21b-b2935e3eff39', '0b6e577c-e749-4b13-8a02-ea450cc31871', '2f0bc5d9-d27a-4fe6-8e42-bd59b568dc4e', 'dfaff916-8f85-4866-9683-7c5b54eb947e', '9dc8f8e7-e7b2-4142-9e86-86cffa9335a0', 'a424d006-706f-4eea-8f42-9ebf220c8f00', 'ba6b9dd0-0067-4524-878d-fed081535475', '0428279e-c1cd-483f-88a8-0134ca978fea', '02ab2845-8081-445c-ac63-f0b5395bc36d', 'a0c98b9f-6405-48cb-8f36-bf1560b32b57', 'a5666c6f-6b40-4547-8774-966a4bf483e2', 'ad46a0ef-a18d-4032-a99c-87c288b345c0', 'a697df34-dc8b-47e3-ae03-87f60efd817a', 'ddfb7c6e-ef4f-478f-84e7-52f9e65b8139', '2dea1770-dde2-4db7-a4ee-38c7420dbfa6', 'bc4f6363-7c44-42e9-afef-b5423c331732', 'ae8c403d-6bc2-4f87-9003-57312696936d', 'f1e4d610-ca2c-41d8-90e6-7157402ab0e2', 'e10043c8-1a57-47ca-a284-22f7b75efa90', '75b0e397-5df5-40f3-9ac5-c71e23b0f136', '5a1a3306-f1e2-4d5d-be8b-79bd9f521ca1', '18fd5617-98f7-4306-80d9-519a7db3325d', 'bbbc09a3-fd1c-4207-8ed8-80af080c14ad', '20d56eee-9e97-4c2a-a77c-8342e1fede46', 'c1406cc6-4a02-4010-b2bb-74b89df2c99c', '4ac408a5-70a7-4261-942d-7e32e390e30e', 'f34d82fd-f4d1-42bf-8505-05ae96b51961', 'a1589607-b414-4345-abb4-5d09e30091d2', 'd3b7aa4f-d5c9-4e02-8890-b72d496b31c8', '443b5305-e599-4407-9ef8-ef88ccab9bcb', 'fdf478d1-f9aa-4794-b36d-59f8fb6fed02', '43b65970-7fbe-4cae-9c83-de81c5ab107a', '6f2a11ac-26cc-49a5-873e-f00ba9c7aca9', '8e9505d8-944e-4a03-8047-bcbcc0761bf9', 'f3835796-2ab2-488e-a246-08ab59f4bcc6', '22e51863-267b-4e7c-bdae-aec182d56943', 'a77a21f1-2847-4b75-aad7-1dbd099ef939', '1c32cd31-9f46-4f51-b662-b16c3cffef70', '801d3ec1-d8ce-4ab4-9e48-348b3a47e29e', '1bf104f5-6870-4a5b-bd6a-d1167ed2bd56', '831ba3e0-f487-4008-bb6e-831d51f7ed33', '328b40f3-9262-488d-9285-379300a9b220', '4c4d0325-ea0a-4a43-93af-d7c42b98f76d', '71d25dfc-f0b5-4155-8574-42cb0d898779', '4dc86fd2-9d48-4489-aadd-05517bce1332', 'a794bad3-aa88-4272-9375-40241c93f736', '079c233c-5beb-431e-ac9f-a51fd1fb464e', '8bdf689c-f75d-427e-bdf3-2d386da26116', '9de7554a-c85b-4818-a929-2bf048644b1e', 'a3e91d40-c419-4e85-aea2-2981c7e441f2', '057755fa-67ae-4786-bedc-10629652b0c3', '678a4d21-57fb-4067-b2ea-e19478b64ae9', 'abf546d6-252e-4bd1-812e-882f830c0a21', 'a5f87497-a900-412b-9da7-9850b039409b', '32f2e027-1945-40c4-b78d-7bfe27352158', '9213bd37-8f82-4c54-86c4-1fd2fc45fbe0', 'c6c73cf2-ad0b-4d25-ac51-12834fde36c4', '7a93c6f1-1ef6-47b7-9bb5-6d686977f0b8', '42030beb-f994-478a-9cf6-a25c16b61554', '81fe4032-0b11-4f43-ba30-86159bad3195', '9d5fe9e8-494f-44c7-aa9e-77125709ae82', 'd465e292-2fbd-4bce-b758-5c3059135b46', 'f6513ba0-8dee-4ca5-8a6f-e75571b608af', 'e80158d4-9323-4b82-acbf-a91dbcb31fdc', '7b65e640-0b59-4697-ab88-54161b3f593d', '77e3088e-8633-4777-b38b-1e8ce1b68fb3', 'c2a515ac-d936-44ca-8b75-0f2cbfc318bb', '617008c7-8af3-44ba-bb0f-0554018cfd07', 'e6629f95-58d7-4107-a761-60e49e337017', '553516ff-29d6-4da1-931d-8a77a7f9dabe', '00766914-6ec4-4d4f-a2b8-546c236adb94', '3c743096-4690-4b80-bc91-12fc1093137f', '7d748512-9fa1-40ac-a28c-8617525e49b5', '070f258d-4189-4427-8c93-8d6d4c01900b', '0217f263-190d-408e-ab71-a5e5358798bc', '31a4b720-a231-4262-9e77-b96bdceb5dea', '00012650-80da-41ec-b55c-2b0459d82f83', 'd1d0879a-eda0-4d5a-9d29-a30e869025ee', '541d1329-667c-4a71-9dac-35837f779214', 'f8f096ce-4f05-4455-ab14-34200f11223b', 'a789ab78-314f-40df-afb7-56033cb3ca08', '3ffbf4db-7233-4de1-8838-daef431cba50', 'd20b6eeb-10d9-42ee-95d2-479de1c30b25', '62cfddb0-d1ed-4fd0-9647-aaf942777e61', '99037a16-64d7-4ec4-a7e1-57198d03cd6c', 'efc2b336-e652-4e0f-915a-ff5d110d4589', '57abf01a-7496-4f27-9b6d-e43014cd5695', '4298ebab-5c8e-4e4a-a853-345d91c3a610', 'fd1ad098-57fd-4bf4-a3ae-5d4536252d2c', 'dd41726b-1676-47fd-bd3e-50b199c486ae', 'd23f4a1c-8a4d-4ca4-b41a-e5f7f7bbd500', '8505ce32-6d86-41ff-a084-c7b7286e4dd4', '4c2ce5b8-8556-41fd-a8a1-464cc0a33cde', '15fcaf53-7a6e-425e-8b7e-6a22460f7924', '8c1be4fa-f991-437e-ab49-48b656cbef81', '313e8c4e-3016-4c0a-af02-854753b5a662', 'f3014641-c4ed-4559-ba4c-c5682912ac38', '33d061aa-1e58-4150-8d14-b970275a8e66', '09341875-b449-4955-95d2-e9880a899b85', '6ec64ecb-ef69-4bf6-8e89-fe38296737e9', '766d2c2b-b86f-4c59-93e2-41e99ca6aed3', '432ddf18-7dcc-43ee-914a-7f30f4564e46', 'a3966d1b-610d-445c-8f1c-6ab6f37191a4', '13d3a1cb-472a-4045-9d61-c98ddee41e5f', 'bda6743a-1761-424e-9be2-e3ecf96bfb11', '26ae2bd4-20d3-4e7f-8be9-1d7273af667f', 'e0925972-c458-4c85-bb10-3417a637b801', '59f7a53f-1f89-4d58-a1fa-229771408eda', '7cfb313f-2aba-477c-9820-f0123a706d82', '3d189269-9a10-49cc-9c8d-5d65b18588e3', '0287e904-23bc-4d94-9e87-eebb144d05f2', 'a59fa908-bcb1-4708-8a23-843933db7a89', '2a04e31c-c2f2-48c1-b8d6-4fa6d8039a62', 'a8d4d52b-4a79-4622-a8af-63bfa74b644f', '1b95d0a8-b090-4d2f-9828-d138041fdbf7', 'b957445c-de8f-4919-921e-e92452f1fec3', '326974e0-cf8d-48b3-b583-c7382b1cf1c4', 'fc15ebe7-d026-410a-a651-a190256fd60d', 'de367fa9-ef37-4147-838b-802eeadd23c3', '0dc0242b-4223-4799-89e4-cf15844dbdd4', 'ee21d749-1c67-4a73-a7ea-0a26155e576d', 'fcc36423-23f0-4402-b1e6-2a11ceb0f5bb', 'fe90e5f5-d8af-46cb-bdaa-c9c593875b6a', '6fc7484d-c4d4-4e16-af57-0d87a4ca2cb5', 'f0b0ac64-4afe-4fda-928d-d8cb8fd89b95', '735fea2a-84e1-4fc7-b246-794fece03a88', 'c98f571f-ac70-410d-a69f-536643b92f76', '6320ce88-4f58-49ef-b789-314a177d5458', '4f010796-201b-4ee6-affd-5a5dbb93e5d3', 'd0c43e39-3c0d-42b1-8662-68eb64f9fd73', '62b01e35-df58-4a0e-88ec-3b84f31b127e', 'bab5020d-f5ed-447e-a8fe-521141a84d98', '3721fb93-d0e1-4463-b56e-3f92d5061805', '25ae53ed-9bc8-48d4-949a-ea449c12b1d7', '992af44b-69f2-4bf3-91be-ba42ddd4467d', '01b5aac4-03cc-45ec-b2fa-eff76f352eae', '9e46ada4-c762-4358-b62b-cf31471a59a3', 'ddbf3d57-c895-4c6c-b1e1-aa82523c57c3', '29fecbfd-3132-443f-9750-7c192daf63a1', '291d9a53-e032-4862-b5f1-d88451ca9245', '822e8321-df57-4c25-8eef-a982becb7d8b', '33466deb-0247-42ae-ac44-2552e41f90b6', '8e3c20b1-5d63-4159-ac69-8f2baa5aba59', '3be19b73-1738-4f0a-9de9-d20a062a659c', '7e2cb8a5-a5b8-44f1-b0e1-27e1a2406e14', '24c665e3-b50c-41ba-82e9-68a16d13e7e0', '6eab5435-ab1a-48fb-a42e-7d24cc4ba135', '7a80e3e4-6a55-43a7-9407-d2b26c1992e2', '27b4a8e9-b94d-4528-8cde-34dd2cb46b13', '52b4d9a4-fc10-4ce7-b7a0-ebfa17dbc38b', '3453ddc6-46d3-48b4-b0f3-c79e2a4fe7bc', '06a48104-0adc-4a3b-8b30-aa949410ac45', '3a8aec70-22f8-400f-b7b1-64785d5810d8', 'cad35492-11d7-407c-9a21-6848968997ac', 'd56f50ab-e165-48c3-b26b-325c6b09c7ed', '4f38135f-9c85-4d92-998a-c43ae3fe8c32', '3b0e2211-4132-4730-84d9-fe0fef4b4b61', 'a08bad2a-edc2-48d1-95c5-3001a012c8b3', '9c8bf36b-088c-472c-aa02-4d470ff7f348', '071075fe-24b7-4bd6-83c3-66c562d2b269', '6a41595e-ef3c-4809-9676-8904ef5cefb5', '0595677d-f984-4330-a384-dc2ecfa48b26', '0506a4d7-f148-4e0d-baad-88234b18822e', 'd4a6736d-db3f-45da-a904-19ea1f62f24a', '01f4d064-8c0a-46b5-841f-564f606040e7', '2e341c27-bda4-466a-b55c-84f25892995f', '0326b9bf-4b1d-466c-a69b-d5c49c7d09c0', 'c9fbaf60-3212-4e24-be4a-9a36fc4716fd', 'ed5b6979-b499-4515-b6ab-57666606b30c', '5a930254-aefb-491c-9f5b-2cabf49f9a73', 'fc117240-f532-476c-b302-692add7e84c0', '36b42b10-2904-4930-905a-11dbd5c73112', 'ef0ecf6f-6a94-45bb-b128-be6697858e66', '2bcc4e0c-ce39-44ae-b2d9-dcc0a9231e44', 'eba8de13-f76a-4743-b791-18ba70f48c67', '4d564d28-4fff-44fa-9b62-2d7926b5c7e6', '3ac01372-60a9-4abc-8f57-c5844c7e8f80', '1658d437-2a11-4361-8073-cc8f2a43eb48', 'be5b55a2-5df1-4874-87ff-51c3bd9edc57', 'b6476847-316f-4f52-b5f2-f69665c37204', '56d2eb60-0359-48b2-8317-50943d89e741', '5721c954-f498-4ddd-80a3-32a45ab5098b', 'ea0c59cc-a1e9-4976-b360-19bc9ef9424a', 'f78a9958-34ae-4dbe-8e5a-cf101318b1a5', '7a8a7d59-68cd-42ea-8cb8-a95828eb41ac', '219cbec4-551f-4b25-be8c-92dba9936c62', '4c2359bb-06c9-4dfe-9c13-3a49dc04183f', 'ce534cdc-8a9e-45f8-8368-b978f6689ff3', '18c9d6ac-91fe-49b5-b88a-3a02d255a30b', '91ddd911-78bb-4ece-a116-a4ce087d7716', '2ed16c66-9ae4-4035-8f43-4253b15af89e', 'c0cba792-5489-4680-bc22-4080df0a7326', '63368551-5d05-4ba0-8940-ff01d9c6c3ad', '71e72b5f-bc45-4633-917b-00c12960b657', '85512aa7-3f24-4af7-a74f-12f9d7de6c5d', 'e27ddf6d-9e69-462c-8ad8-2a766201f2fc', '8fc25484-5437-4346-8cac-9ecb59e126e3', '6e1830f4-aaad-4e81-a531-508b28bded9b', 'bc101626-bde6-4866-9963-35e2382b381a', 'ccde6d8b-1185-43af-8e75-418b6d4ab14a', 'f10e2fde-683e-41e0-af90-1b61a3e4ee8a', '856a454f-87ab-413b-817e-a20a38c64931', '3a40fb6f-a305-4deb-b437-95623c2dade5', '47a259d3-4092-4a06-9d0c-113c88d80998', 'b90a1028-80e1-414f-96d9-03c133cf1d30', 'f7ccfd70-c87b-474f-8792-384aa0ea4024', '81116b8d-cadd-46b4-8b15-4f8418dd3efc', '8f6ce6db-b898-4c91-93d3-17ea20bea9fa', 'affceeee-0ab6-4827-b14a-f23c7af70ce3', 'c672b88f-812f-4859-ab80-2c35d78dcd91', '8b023052-41b6-461a-90f9-e323481c0e10', 'f83adaf9-d9c1-4980-bd65-38152781b4de', 'c090c521-84c6-4cb5-ac88-f295cd5a1574', 'a069e011-d0b8-4dfe-bd14-a1520ab8c21a', '1595159c-5502-41ac-b962-b26ec4b29e76', '8348adbd-8376-4b56-b7fd-631e17f222ac', 'fe4578b4-4c57-45be-9422-4fe2d12bfb10', 'ddf7195d-2adf-4cf9-a386-23dd5fd29c14', '27962b5f-b1be-4e3f-bea1-40be0d650c27', 'f4dd3bb3-c282-4aa5-9375-e18e816d41fd', '419f6304-6e73-42a1-ab6a-faecf16bc7c3', '93bbb564-5539-4e57-b40e-9041097ecdcb', 'e9a7e924-b439-48e1-87fe-d5ce8d7677bb', '2c6d9963-a854-4517-88c8-4d29602a6609', '1df6b2e9-99fd-4e07-acb8-6cfd1b14680b', '73e6610d-2a57-4c8c-8b68-e3fc50c0255b', 'bb7f3cd6-3f71-4880-9c47-b986fde8bf70', 'c16a6038-aeb1-488f-9ed3-7bd4958268a3', 'f2961a11-eede-4069-b308-0861eadaac4d', 'a421ecb7-360a-4449-8dcb-06ebf3cbd451', 'defb6cb0-5182-4d52-9f94-944c61efea23', 'a9b62487-5e78-4741-80f4-ffdf088add38', '866ef303-c52f-40f3-932d-ba79813a5015', '26e11cad-1b94-4275-8f53-10e14ef094aa', '312d8991-0ddb-4008-a495-a2b599b88b5f', '90140f61-c36e-4b8f-8cb1-73e33ecf18a5', '9d0fde3b-ca44-4847-995b-6d636c705977', '9da81622-abe1-49fd-8edb-84e44c4e6ead', '24a415a3-d465-4ba2-bee0-37db2a6924b2', '0f2704a6-957d-42c0-a413-59e13dff81b2', 'fbb8a7b9-b263-41f8-8ef4-1bd6757ff0ee', '1ada6a74-ace2-40fd-8074-e27c3aadf889', '8cb1747f-7b44-450d-95c6-fe822621a732', '8f74f338-520c-40fc-96b7-354a2b6f8c16', '237201b9-8c42-45f3-a7c3-3b8da4102e89', 'ca9c8d85-f778-4b2c-be0a-33f303a3d0c3', '93829afb-f372-4e93-ad1a-96186f6a8f5b', 'cddf5edc-908d-4c40-b653-b25a4f2e23b8', 'c6c402e3-8d3d-4b04-b475-81854996ff16', 'b5a5bbdf-fcac-41db-9df2-06800eeeaa80', '02ef399b-a0b3-48f6-817a-d2612c4bc9cf', 'f52b16b4-13b8-44d6-92e6-459367f479f4', 'f23b8123-31d1-49b8-bdfd-aa58bb2c3e8d', 'eba8c972-ae1e-4078-9340-635623b2c2f8', '78bc2c2f-5365-400f-afd1-91a4ed5fa9d5', '3081aaf7-3356-4aa1-a10f-b7cc4650e5ec', '434b2692-cc34-4957-991d-eb41604cddd5', '3c61ff9e-d22f-464f-b0fc-f9ecaddf169e', '4ce9c065-0f4b-4198-971d-34b2a46ee672', 'ec1a8e10-f484-454b-aa2b-4c6dcd5624b6', '43d65f08-979c-41fc-9896-67493e738943', 'ef8abecd-7d74-4e95-9ac5-9665cedb06a6', '47532479-f895-46d5-baeb-5f18c9cf36e0', '7186afa3-ede6-4391-b31a-a04ebd9cd3eb', '7d57b92e-ac8b-4299-9790-64b19899ad80', 'fca1cf24-6cb6-4294-b6b6-e52fcf4edcfb', '0fa7fe82-37e7-4acc-b0fe-ff4c20d5ce1a', 'd1f1eca4-1d66-40f1-8c31-8a8128503acb', '29c374a9-ef37-4e39-860e-6aa46a7dc3de', '3371445d-fa80-49db-bd63-7d28bbbab727', 'dd66709b-f7d9-4461-8fcf-0f2757b23dc9', '3530c3a4-8803-4091-9d4b-d28eb2eefba0', '5f70d0ad-ee38-4845-97d6-5c113b1f2e0d', '4035d212-3b28-41c3-9b8c-26e57a41ee8f', '87723840-224e-48e8-ab0f-bbb0092fcd26', 'aa2f5c7c-b4e0-480e-b375-d09fcdbceab4', 'e9eb35a2-cd65-4464-8c24-df9be0d7280b', '5d01c063-e032-4ed5-9425-802819dfc093', '223b4023-1211-4f78-9977-388b3e199843', 'fc4eaaa3-8e6d-44f3-bdee-3e80853704d0', 'ef69266b-b9e8-4596-ac61-bc061c00dc31', '95312275-2173-4f43-86ca-49f53c805e18', '4ec3c2b7-d833-4c1c-b2a5-3317585cc2b3', 'e9b1a844-74b2-4463-a88f-45886560eb35', '796c5265-7ad3-4a86-b1ea-dcd324215782', '55b01efa-a3aa-4f39-b34e-fc19967a1a55', 'd9887abc-ad59-441f-b358-ce8c49835005', '76402b6b-ac55-4c8e-ac13-9cbeeb72d958', 'e92f259f-cfce-4b31-b038-d5b9076319ab', '8d798532-c202-45b0-8f5e-ca2d535cf2fd', '1f86b820-9a7e-4e5a-99f3-3f444402876a', 'e5af6439-4bba-4b02-9405-898d0f239cae', '82e97aa6-5285-4ecb-8473-ab9391818c04', 'a4553b59-a6d3-4e5c-a0c6-339cbba05a75', '51ada0f3-4a72-410d-b132-d4d61d8c7bd0', 'd9921816-3405-4543-918f-7b3a2620f363', 'ac552b2d-7787-448e-9b44-1a708867080e', '3f9a9bab-a627-458c-946f-9078b3e38ce5', 'ecdb8cc3-441f-48dd-89d7-466373afa455', 'fcdf2f99-911d-42c7-a2df-179ee2153346', 'c04bbbc7-0780-4504-8648-d1ca9fbe4b1d', 'afbf5821-6964-4c79-8987-91f48370a5cd', '306f6a96-f171-4441-8bbe-21fef607ce9c', 'db9e0b1a-cff4-48ab-be8b-297f787fccf8', '38f2855e-1c33-4350-aa24-5faf40433a51', '1cbbe63a-f376-4ee3-943c-20986157dd24', '3487ba29-3284-4d7c-afcb-e228268407e9', '06e6e13c-5da2-4b99-9bda-d53320b7ee96', '9034d89f-9f26-4227-ba54-94e2243beba3', '7b0af725-3709-40bd-9934-4bd3298db41f', '2f6e01ac-a5d0-4297-a233-a2bda84b76a5', '707335bc-2ac3-4c4a-bb2d-7132c5ffceb2', '1e21b511-523f-4d36-b834-4990a37a92ee', '68622af1-f340-40b5-9416-bf2c3ce3596c', 'eb3b643d-84ab-4145-aed1-d659ee895d89', '91f426cf-0ebe-4b01-b324-9a7ea3d14c6f', 'bb39612b-f82c-4f98-895f-7dc2c982b110', '1bcda83d-6974-4529-b69d-338451ade59d', '9c449dd5-66b8-4e9f-ad96-4307a98695e9', '5dabc3c1-d383-4322-a37c-4a05bec193c1', '5a71423c-df8f-4d12-b4d9-bbf03bc99cff', '4babe0e1-6b9a-46e3-b481-643a97058e34', '80ee44e5-0eef-4b4b-a4d0-e0a2203331ee', '97254d31-9595-4b38-9680-338083eab0c2', '76f27b40-57dc-40ac-834b-a47b7920a086', '0899e6d7-fda8-4828-ad5d-6344a9fa524d', '6cf2cc7a-c31f-4f7c-95f6-f770ff03d707', '04f9b917-4bb5-406e-90f5-adf175d8c0d2', 'eb69ae1b-2df3-4d5b-882d-cc37b16514cc', '07a138df-bdbe-4810-aeca-ed2f701dc59b', 'e9182955-da6b-44a1-8f2b-de9cf2539969', '44fe0789-82b0-4faf-bed1-45199ba11b80', 'da145235-f5ef-42b0-a019-c46ebebb3a2d', 'e85a5a93-abd5-4ba6-89cd-b0da4ec9f021', '856f5d97-4501-434e-b35b-81ce162818a5', 'd9bad6ea-0e46-4984-8c38-2ad82b1ab4cf', '9efb57a5-a919-4d0c-ace7-b15be5ac4e09', '81414186-0626-410b-9ba1-517a1e759eec', '5639a3ad-7c00-45ec-8134-d767fc302988', 'd328ac24-5f7f-4143-91e4-75ba1e3721c1', '613ae9d5-4cdd-4f4f-afb7-46c77fa93440', 'fc4ed088-7ea4-4dd5-b700-36f9ebfbddb1', 'c93ca80a-8a09-4943-8e03-6b78ad92495b', '0a2e31e9-83ab-4f27-a18e-b8406d392d5f', '9fd19ae6-b91a-4a24-ac61-a48916cb552e', '8b4743b2-bf33-460f-b461-28579a2634e2', '7d0d5072-a04e-4d17-976c-a7922a4b1c2c', 'a8177d51-0310-4a84-bec5-26f618444ebf', '5a205cb6-3e50-431c-80ef-3ef1c9d77a03', 'adea6203-427d-4052-b461-d76dedace2d2', 'c0718d9c-4da8-4900-b31d-12c5299f2a87', 'c8ca7947-eb65-474e-9297-1671b498b3b5', '0d4e99ca-50ff-455c-8358-3a39344a96fa', '0654ec2c-6568-4f3a-aee6-16fd6e31f7cb', 'b1fea7fd-c6da-4be0-af86-45824c1902ad', 'ff0b4ff1-8059-4a5e-8f43-2380dcde1884', '10e0f32f-c8c4-4c50-8285-14868e076f4e', '27236d12-f989-4aac-a3b2-72a898823039', '75a84755-ef70-475f-b20a-55cbd027e21d', '9e3dd191-d544-4cd2-8822-d73e813bcbee', 'a48c866c-6931-4676-9f11-cd807562abe4', '563a25a9-f1e7-45ba-95fd-f182ca6d2799', '5191e034-0a89-45e0-8242-d71bc8618dd8', 'ed9e02a1-c552-4f45-b03c-bd79fbe1e8f8', 'e4bb567a-5f3e-4e50-8007-370204f7f9ae', '9c3c2e39-ff5c-45f0-bc3e-9dfe5560c669', '0135d124-8eeb-4963-b22c-6699cb2f39bc', '45f79933-5663-4417-b036-fb3791ba01fc', '43f37083-915d-4c84-abe6-95fd83cc985a', '75d80ecc-f257-4c9a-9489-cc8947ad1f8e', 'd3867894-0739-432a-9893-7e0d7da1bff1', '0ead70d2-8a3e-477f-a74c-cc70e1513316', '41705a2d-e98d-41c5-924f-ff6838d8add0', 'a81e1f00-e36d-4fc7-9971-cdddaaeec66f', 'e5ff33e0-b835-4527-baf7-d21e49c96b06', '6f610e52-b35e-4be8-90e3-8602356321e0', '7bb435f7-8e8f-4aa6-9fff-faad4e7d6b84', '81c3c3ca-7b8d-4e68-9fa8-4c27104bb45b', 'e6c9bef0-6ccb-4ec9-920f-e046a6012dee', '5a051eeb-1062-495e-82fc-5a98286bc315', 'd55e76a3-76f8-445b-8c4c-8b8720eb005c', '8f53df7f-d0ee-4442-b386-b12a0c9ed8e6', '1244000c-ce91-465e-8101-c5307c0d73ce', '12e6d075-d32a-4150-937e-45e25849c0ed', 'd24971ba-7b80-4a97-ba2d-299ecff24f25', '8663136b-7829-40a6-a944-6609b9846ff3', '061a60e6-de91-4557-bd06-dfa57cd520e0', '55ee75f3-81f4-4cfe-b07c-0b2359e6eba5', 'e5d81bfc-0f1e-46f3-af29-513cd066748d', '0bb5ed0b-728c-42de-9c24-9359d85d2493', 'a1b92db1-1cd5-49a4-9a0a-5b62c6f20d0b', '5c0554de-f0f3-4fd9-a34d-03fbfd9eda3b', '58d61db4-4cc2-4337-87f0-c3814f84328a', '98a67768-899d-4a1b-9691-c075e9977985', 'cd290c41-b205-4935-ba55-95d897883c1f', '492fd310-47af-4826-8af6-74e97c842839', '33f2e536-7da9-42b1-a4b2-9442b98f990c', '291533f4-43d6-46e3-b82c-e376d0904000', 'e1fb90ab-9a25-402f-b1b5-ad7e188626a5', '52d2fc59-5fb0-4d39-80e4-3db13e91ff88', '4ef3445d-3f5c-4ffc-bbe8-6a8bd016ad0e', 'beb21952-e89d-45a7-ac1e-d4611541673c', '86b92999-2690-4cb8-902f-a8def8973ab9', 'badde801-304f-483e-a70b-f9a347d90d89', 'a9512c7e-1675-4f98-90eb-bbf2daa9b29f', '2b4d7ea5-b44c-40c2-89e9-4b9800ff9440', 'b67b0684-f4a2-4b22-b426-d46ac00b6f91', '26338d6e-6d05-47cf-ae17-254e4775564e', '3f4b0b1c-1003-4585-9991-b5267640286a', 'd8cd2a03-cded-4202-903a-269cf51ac951', '8a3c8454-98ca-45ec-ac63-312d9f001d1d', 'd853e3a9-11d0-47d2-b6ac-e586423094f5', '7575da53-7e78-4992-9003-cdc03f27b5f2', 'f16c3ecb-c780-4481-8402-fd7404517d4f', '7461b4cc-5f24-4636-bdbe-f43a09ba15a0', 'be727199-a323-4968-a632-7512bba03014', '56e5cfed-192e-467c-ac07-9d928320883c', 'bd7068e3-de2d-4eb5-b00c-682e5b035087']\n"
     ]
    }
   ],
   "source": [
    "print(ids)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "1bb2d575",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "page_content='operations. We also lease an office complex in Shanghai, China, our headquarters for our Greater China geography, occupied by employees focused on implementing our\n",
      "wholesale, NIKE Direct and merchandising strategies in the region, among other functions.\n",
      "In the United States, NIKE has eight significant distribution centers. Five are located in or near Memphis, Tennessee, two of which are owned and three of which are\n",
      "leased. Two other distribution centers, one located in Indianapolis, Indiana and one located in Dayton, Tennessee, are leased and operated by third-party logistics\n",
      "providers. One distribution center for Converse is located in Ontario, California, which is leased. NIKE has a number of distribution facilities outside the United States,\n",
      "some of which are leased and operated by third-party logistics providers. The most significant distribution facilities outside the United States are located in Laakdal,' metadata={'creator': 'EDGAR Filing HTML Converter', 'start_index': 804, 'page': 26, 'total_pages': 107, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'moddate': '2023-07-20T16:22:08-04:00', 'keywords': '0000320187-23-000039; ; 10-K', 'title': '0000320187-23-000039', 'page_label': '27', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'creationdate': '2023-07-20T16:22:00-04:00'}\n"
     ]
    }
   ],
   "source": [
    "results = vector_store.similarity_search(\n",
    "    \"How many distribution centers does Nike have in the US?\"\n",
    ")\n",
    "\n",
    "print(results[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "7e4c03bd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "page_content='Table of Contents\n",
      "PART I\n",
      "ITEM 1. BUSINESS\n",
      "GENERAL\n",
      "NIKE, Inc. was incorporated in 1967 under the laws of the State of Oregon. As used in this Annual Report on Form 10-K (this \"Annual Report\"), the terms \"we,\" \"us,\" \"our,\"\n",
      "\"NIKE\" and the \"Company\" refer to NIKE, Inc. and its predecessors, subsidiaries and affiliates, collectively, unless the context indicates otherwise.\n",
      "Our principal business activity is the design, development and worldwide marketing and selling of athletic footwear, apparel, equipment, accessories and services. NIKE is\n",
      "the largest seller of athletic footwear and apparel in the world. We sell our products through NIKE Direct operations, which are comprised of both NIKE-owned retail stores\n",
      "and sales through our digital platforms (also referred to as \"NIKE Brand Digital\"), to retail accounts and to a mix of independent distributors, licensees and sales' metadata={'creator': 'EDGAR Filing HTML Converter', 'creationdate': '2023-07-20T16:22:00-04:00', 'total_pages': 107, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'page': 3, 'moddate': '2023-07-20T16:22:08-04:00', 'page_label': '4', 'start_index': 0, 'title': '0000320187-23-000039', 'keywords': '0000320187-23-000039; ; 10-K', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31'}\n"
     ]
    }
   ],
   "source": [
    "results = await vector_store.asimilarity_search(\"When was Nike incorporated?\")\n",
    "\n",
    "print(results[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "051e4c85",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.598900318145752\n",
      "\n",
      "page_content='Table of Contents\n",
      "FISCAL 2023 NIKE BRAND REVENUE HIGHLIGHTSThe following tables present NIKE Brand revenues disaggregated by reportable operating segment, distribution channel and major product line:\n",
      "FISCAL 2023 COMPARED TO FISCAL 2022\n",
      "• NIKE, Inc. Revenues were $51.2 billion in fiscal 2023, which increased 10% and 16% compared to fiscal 2022 on a reported and currency-neutral basis, respectively.\n",
      "The increase was due to higher revenues in North America, Europe, Middle East & Africa (\"EMEA\"), APLA and Greater China, which contributed approximately 7, 6,\n",
      "2 and 1 percentage points to NIKE, Inc. Revenues, respectively.\n",
      "• NIKE Brand revenues, which represented over 90% of NIKE, Inc. Revenues, increased 10% and 16% on a reported and currency-neutral basis, respectively. This\n",
      "increase was primarily due to higher revenues in Men's, the Jordan Brand, Women's and Kids' which grew 17%, 35%,11% and 10%, respectively, on a wholesale\n",
      "equivalent basis.' metadata={'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'total_pages': 107, 'keywords': '0000320187-23-000039; ; 10-K', 'title': '0000320187-23-000039', 'start_index': 0, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'creationdate': '2023-07-20T16:22:00-04:00', 'moddate': '2023-07-20T16:22:08-04:00', 'creator': 'EDGAR Filing HTML Converter', 'page': 35, 'page_label': '36', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf'}\n"
     ]
    }
   ],
   "source": [
    "# Note that providers implement different scores; the score here\n",
    "# is a distance metric that varies inversely with similarity.\n",
    "\n",
    "results = vector_store.similarity_search_with_score(\"What was Nike's revenue in 2023?\")\n",
    "doc, score = results[0]\n",
    "print(f\"Score: {score}\\n\")\n",
    "print(doc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "029c4415",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(Document(id='fcc36423-23f0-4402-b1e6-2a11ceb0f5bb', metadata={'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'total_pages': 107, 'keywords': '0000320187-23-000039; ; 10-K', 'title': '0000320187-23-000039', 'start_index': 0, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'creationdate': '2023-07-20T16:22:00-04:00', 'moddate': '2023-07-20T16:22:08-04:00', 'creator': 'EDGAR Filing HTML Converter', 'page': 35, 'page_label': '36', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf'}, page_content='Table of Contents\\nFISCAL 2023 NIKE BRAND REVENUE HIGHLIGHTSThe following tables present NIKE Brand revenues disaggregated by reportable operating segment, distribution channel and major product line:\\nFISCAL 2023 COMPARED TO FISCAL 2022\\n• NIKE, Inc. Revenues were $51.2 billion in fiscal 2023, which increased 10% and 16% compared to fiscal 2022 on a reported and currency-neutral basis, respectively.\\nThe increase was due to higher revenues in North America, Europe, Middle East & Africa (\"EMEA\"), APLA and Greater China, which contributed approximately 7, 6,\\n2 and 1 percentage points to NIKE, Inc. Revenues, respectively.\\n• NIKE Brand revenues, which represented over 90% of NIKE, Inc. Revenues, increased 10% and 16% on a reported and currency-neutral basis, respectively. This\\nincrease was primarily due to higher revenues in Men\\'s, the Jordan Brand, Women\\'s and Kids\\' which grew 17%, 35%,11% and 10%, respectively, on a wholesale\\nequivalent basis.'), 0.598900318145752), (Document(id='13d3a1cb-472a-4045-9d61-c98ddee41e5f', metadata={'page_label': '31', 'page': 30, 'total_pages': 107, 'title': '0000320187-23-000039', 'start_index': 1540, 'moddate': '2023-07-20T16:22:08-04:00', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'creationdate': '2023-07-20T16:22:00-04:00', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'creator': 'EDGAR Filing HTML Converter', 'keywords': '0000320187-23-000039; ; 10-K'}, page_content='Enterprise Resource Planning Platform, data and analytics, demand sensing, insight gathering, and other areas to create an end-to-end technology foundation, which we\\nbelieve will further accelerate our digital transformation. We believe this unified approach will accelerate growth and unlock more efficiency for our business, while driving\\nspeed and responsiveness as we serve consumers globally.\\nFINANCIAL HIGHLIGHTS\\n• In fiscal 2023, NIKE, Inc. achieved record Revenues of $51.2 billion, which increased 10% and 16% on a reported and currency-neutral basis, respectively\\n• NIKE Direct revenues grew 14% from $18.7 billion in fiscal 2022 to $21.3 billion in fiscal 2023, and represented approximately 44% of total NIKE Brand revenues for\\nfiscal 2023\\n• Gross margin for the fiscal year decreased 250 basis points to 43.5% primarily driven by higher product costs, higher markdowns and unfavorable changes in foreign\\ncurrency exchange rates, partially offset by strategic pricing actions'), 0.6204098463058472), (Document(id='a59fa908-bcb1-4708-8a23-843933db7a89', metadata={'total_pages': 107, 'creator': 'EDGAR Filing HTML Converter', 'creationdate': '2023-07-20T16:22:00-04:00', 'title': '0000320187-23-000039', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'moddate': '2023-07-20T16:22:08-04:00', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'start_index': 3132, 'page': 31, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'keywords': '0000320187-23-000039; ; 10-K', 'page_label': '32'}, page_content='of Income. Total NIKE, Inc. EBIT for fiscal 2023 and fiscal 2022 is as follows:\\nYEAR ENDED MAY 31,\\n(Dollars in millions) 2023 2022\\nNet income $ 5,070 $ 6,046\\nAdd: Interest expense (income), net (6) 205\\nAdd: Income tax expense 1,131 605\\nEarnings before interest and taxes $ 6,195 $ 6,856\\nEBIT Margin: Calculated as total NIKE, Inc. EBIT divided by total NIKE, Inc. Revenues. Our EBIT Margin calculation for fiscal 2023 and fiscal 2022 is as follows:\\nYEAR ENDED MAY 31,\\n(Dollars in millions) 2023 2022\\nNumerator\\nEarnings before interest and taxes $ 6,195 $ 6,856\\nDenominator\\nTotal NIKE, Inc. Revenues $ 51,217 $ 46,710\\nEBIT Margin 12.1% 14.7%\\n2023 FORM 10-K 29'), 0.6207481622695923), (Document(id='563a25a9-f1e7-45ba-95fd-f182ca6d2799', metadata={'page': 88, 'page_label': '89', 'title': '0000320187-23-000039', 'total_pages': 107, 'creator': 'EDGAR Filing HTML Converter', 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'creationdate': '2023-07-20T16:22:00-04:00', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'moddate': '2023-07-20T16:22:08-04:00', 'start_index': 0, 'keywords': '0000320187-23-000039; ; 10-K', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31'}, page_content='Table of Contents\\nYEAR ENDED MAY 31,\\n(Dollars in millions) 2023 2022 2021\\nREVENUES\\nNorth America $ 21,608 $ 18,353 $ 17,179 \\nEurope, Middle East & Africa 13,418 12,479 11,456 \\nGreater China 7,248 7,547 8,290 \\nAsia Pacific & Latin America 6,431 5,955 5,343 \\nGlobal Brand Divisions 58 102 25 \\nTotal NIKE Brand 48,763 44,436 42,293 \\nConverse 2,427 2,346 2,205 \\nCorporate 27 (72) 40 \\nTOTAL NIKE, INC. REVENUES $ 51,217 $ 46,710 $ 44,538 \\nEARNINGS BEFORE INTEREST AND TAXES\\nNorth America $ 5,454 $ 5,114 $ 5,089 \\nEurope, Middle East & Africa 3,531 3,293 2,435 \\nGreater China 2,283 2,365 3,243 \\nAsia Pacific & Latin America 1,932 1,896 1,530 \\nGlobal Brand Divisions (4,841) (4,262) (3,656)\\nConverse 676 669 543 \\nCorporate (2,840) (2,219) (2,261)\\nInterest expense (income), net (6) 205 262 \\nTOTAL NIKE, INC. INCOME BEFORE INCOME TAXES $ 6,201 $ 6,651 $ 6,661 \\nADDITIONS TO PROPERTY, PLANT AND EQUIPMENT\\nNorth America $ 283 $ 146 $ 98 \\nEurope, Middle East & Africa 215 197 153 \\nGreater China 56 78 94'), 0.6331368088722229)]\n"
     ]
    }
   ],
   "source": [
    "print(results)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "16f41af4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "page_content='Table of Contents\n",
      "GROSS MARGIN\n",
      "FISCAL 2023 COMPARED TO FISCAL 2022\n",
      "For fiscal 2023, our consolidated gross profit increased 4% to $22,292 million compared to $21,479 million for fiscal 2022. Gross margin decreased 250 basis points to\n",
      "43.5% for fiscal 2023 compared to 46.0% for fiscal 2022 due to the following:\n",
      "*Wholesale equivalent\n",
      "The decrease in gross margin for fiscal 2023 was primarily due to:\n",
      "• Higher NIKE Brand product costs, on a wholesale equivalent basis, primarily due to higher input costs and elevated inbound freight and logistics costs as well as\n",
      "product mix;\n",
      "• Lower margin in our NIKE Direct business, driven by higher promotional activity to liquidate inventory in the current period compared to lower promotional activity in\n",
      "the prior period resulting from lower available inventory supply;\n",
      "• Unfavorable changes in net foreign currency exchange rates, including hedges; and\n",
      "• Lower off-price margin, on a wholesale equivalent basis.\n",
      "This was partially offset by:' metadata={'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'creator': 'EDGAR Filing HTML Converter', 'title': '0000320187-23-000039', 'total_pages': 107, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'keywords': '0000320187-23-000039; ; 10-K', 'page_label': '37', 'start_index': 0, 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'creationdate': '2023-07-20T16:22:00-04:00', 'moddate': '2023-07-20T16:22:08-04:00', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'page': 36}\n"
     ]
    }
   ],
   "source": [
    "embedding = embeddings.embed_query(\"How were Nike's margins impacted in 2023?\")\n",
    "\n",
    "results = vector_store.similarity_search_by_vector(embedding)\n",
    "print(results[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "397ffe35",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[Document(id='d23f4a1c-8a4d-4ca4-b41a-e5f7f7bbd500', metadata={'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'total_pages': 107, 'title': '0000320187-23-000039', 'creator': 'EDGAR Filing HTML Converter', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'page': 26, 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'page_label': '27', 'moddate': '2023-07-20T16:22:08-04:00', 'creationdate': '2023-07-20T16:22:00-04:00', 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'start_index': 804, 'keywords': '0000320187-23-000039; ; 10-K'}, page_content='operations. We also lease an office complex in Shanghai, China, our headquarters for our Greater China geography, occupied by employees focused on implementing our\\nwholesale, NIKE Direct and merchandising strategies in the region, among other functions.\\nIn the United States, NIKE has eight significant distribution centers. Five are located in or near Memphis, Tennessee, two of which are owned and three of which are\\nleased. Two other distribution centers, one located in Indianapolis, Indiana and one located in Dayton, Tennessee, are leased and operated by third-party logistics\\nproviders. One distribution center for Converse is located in Ontario, California, which is leased. NIKE has a number of distribution facilities outside the United States,\\nsome of which are leased and operated by third-party logistics providers. The most significant distribution facilities outside the United States are located in Laakdal,')],\n",
       " [Document(id='598c01b6-6415-491c-b650-00e876c34af9', metadata={'creator': 'EDGAR Filing HTML Converter', 'title': '0000320187-23-000039', 'page_label': '4', 'start_index': 0, 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'moddate': '2023-07-20T16:22:08-04:00', 'keywords': '0000320187-23-000039; ; 10-K', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'total_pages': 107, 'page': 3, 'creationdate': '2023-07-20T16:22:00-04:00'}, page_content='Table of Contents\\nPART I\\nITEM 1. BUSINESS\\nGENERAL\\nNIKE, Inc. was incorporated in 1967 under the laws of the State of Oregon. As used in this Annual Report on Form 10-K (this \"Annual Report\"), the terms \"we,\" \"us,\" \"our,\"\\n\"NIKE\" and the \"Company\" refer to NIKE, Inc. and its predecessors, subsidiaries and affiliates, collectively, unless the context indicates otherwise.\\nOur principal business activity is the design, development and worldwide marketing and selling of athletic footwear, apparel, equipment, accessories and services. NIKE is\\nthe largest seller of athletic footwear and apparel in the world. We sell our products through NIKE Direct operations, which are comprised of both NIKE-owned retail stores\\nand sales through our digital platforms (also referred to as \"NIKE Brand Digital\"), to retail accounts and to a mix of independent distributors, licensees and sales')]]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from typing import List\n",
    "\n",
    "from langchain_core.documents import Document\n",
    "from langchain_core.runnables import chain\n",
    "\n",
    "\n",
    "@chain\n",
    "def retriever(query: str) -> List[Document]:\n",
    "    return vector_store.similarity_search(query, k=1)\n",
    "\n",
    "\n",
    "retriever.batch(\n",
    "    [\n",
    "        \"How many distribution centers does Nike have in the US?\",\n",
    "        \"When was Nike incorporated?\",\n",
    "    ],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "f3ba0f46",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[Document(id='d23f4a1c-8a4d-4ca4-b41a-e5f7f7bbd500', metadata={'page': 26, 'creationdate': '2023-07-20T16:22:00-04:00', 'page_label': '27', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'total_pages': 107, 'moddate': '2023-07-20T16:22:08-04:00', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'start_index': 804, 'title': '0000320187-23-000039', 'keywords': '0000320187-23-000039; ; 10-K', 'creator': 'EDGAR Filing HTML Converter'}, page_content='operations. We also lease an office complex in Shanghai, China, our headquarters for our Greater China geography, occupied by employees focused on implementing our\\nwholesale, NIKE Direct and merchandising strategies in the region, among other functions.\\nIn the United States, NIKE has eight significant distribution centers. Five are located in or near Memphis, Tennessee, two of which are owned and three of which are\\nleased. Two other distribution centers, one located in Indianapolis, Indiana and one located in Dayton, Tennessee, are leased and operated by third-party logistics\\nproviders. One distribution center for Converse is located in Ontario, California, which is leased. NIKE has a number of distribution facilities outside the United States,\\nsome of which are leased and operated by third-party logistics providers. The most significant distribution facilities outside the United States are located in Laakdal,')],\n",
       " [Document(id='598c01b6-6415-491c-b650-00e876c34af9', metadata={'page': 3, 'total_pages': 107, 'moddate': '2023-07-20T16:22:08-04:00', 'page_label': '4', 'keywords': '0000320187-23-000039; ; 10-K', 'source': '..\\\\langchain官网学习-v1版本\\\\data\\\\nke-10k-2023.pdf', 'start_index': 0, 'creator': 'EDGAR Filing HTML Converter', 'author': 'EDGAR Online, a division of Donnelley Financial Solutions', 'producer': 'EDGRpdf Service w/ EO.Pdf 22.0.40.0', 'creationdate': '2023-07-20T16:22:00-04:00', 'subject': 'Form 10-K filed on 2023-07-20 for the period ending 2023-05-31', 'title': '0000320187-23-000039'}, page_content='Table of Contents\\nPART I\\nITEM 1. BUSINESS\\nGENERAL\\nNIKE, Inc. was incorporated in 1967 under the laws of the State of Oregon. As used in this Annual Report on Form 10-K (this \"Annual Report\"), the terms \"we,\" \"us,\" \"our,\"\\n\"NIKE\" and the \"Company\" refer to NIKE, Inc. and its predecessors, subsidiaries and affiliates, collectively, unless the context indicates otherwise.\\nOur principal business activity is the design, development and worldwide marketing and selling of athletic footwear, apparel, equipment, accessories and services. NIKE is\\nthe largest seller of athletic footwear and apparel in the world. We sell our products through NIKE Direct operations, which are comprised of both NIKE-owned retail stores\\nand sales through our digital platforms (also referred to as \"NIKE Brand Digital\"), to retail accounts and to a mix of independent distributors, licensees and sales')]]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "retriever = vector_store.as_retriever(\n",
    "    search_type=\"similarity\",\n",
    "    search_kwargs={\"k\": 1},\n",
    ")\n",
    "\n",
    "retriever.batch(\n",
    "    [\n",
    "        \"How many distribution centers does Nike have in the US?\",\n",
    "        \"When was Nike incorporated?\",\n",
    "    ],\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "langchain_learn",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
